<?php

require_once '../dlo/EspacoCulturalDLO.php';
require_once '../dlo/GrupoDLO.php';
require_once '../dlo/UsuarioDLO.php';

class EspacoCulturalController {

    private $cod_espaco;
    private $nome_espaco;
    private $cod_usuario;
    private $cod_facilidade;
    private $parecer;
    private $valor;
    private $area;
    private $bi;
    private $cod_cmdo;
    private $descricao;
    private $cadastro_dphcex;
    private $email;
    private $cod_estado_espaco;
    private $cod_fonte_recursos;
    private $nome;
    private $cod_om;
    private $cod_rm;
    private $telefone;
    private $cod_tipo_espaco;
    private $logradouro;
    private $numero;
    private $cidade;
    private $estado;
    private $cep;
    private $bairro;
    private $complemento;
    private $site;
    private $funcionamento;
    private $row_id;
    private $campo_id;
    private $campo_valor;
    private $tipo_listagem;
    private $cmdo;

    function __construct(&$cod_espaco, &$nome_espaco, &$cod_usuario, &$cod_facilidade, &$parecer, &$valor, &$area, &$bi, &$cod_cmdo, &$descricao, &$cadastro_dphcex, &$email, &$cod_estado_espaco, &$cod_fonte_recursos, &$nome, &$cod_om, &$cod_rm, &$telefone, &$cod_tipo_espaco, &$logradouro, &$numero, &$cidade, &$estado, &$cep, &$bairro, &$complemento, &$row_id, &$campo_id, &$campo_valor, &$tipo_listagem, &$cmdo, &$site, &$funcionamento) {
        $this->cmdo = &$cmdo;
        $this->cod_espaco = &$cod_espaco;
        $this->nome_espaco = &$nome_espaco;
        $this->cod_usuario = &$cod_usuario;
        $this->cod_facilidade = &$cod_facilidade;
        $this->parecer = &$parecer;
        $this->valor = &$valor;
        $this->area = &$area;
        $this->bi = &$bi;
        $this->cod_cmdo = &$cod_cmdo;
        $this->descricao = &$descricao;
        $this->cadastro_dphcex = &$cadastro_dphcex;
        $this->email = &$email;
        $this->cod_estado_espaco = &$cod_estado_espaco;
        $this->cod_fonte_recursos = &$cod_fonte_recursos;
        $this->nome = &$nome;
        $this->cod_om = &$cod_om;
        $this->cod_rm = &$cod_rm;
        $this->telefone = &$telefone;
        $this->cod_tipo_espaco = &$cod_tipo_espaco;
        $this->logradouro = &$logradouro;
        $this->numero = &$numero;
        $this->cidade = &$cidade;
        $this->estado = &$estado;
        $this->cep = &$cep;
        $this->bairro = &$bairro;
        $this->complemento = &$complemento;
        $this->row_id = &$row_id;
        $this->campo_id = &$campo_id;
        $this->campo_valor = &$campo_valor;
        $this->tipo_listagem = &$tipo_listagem;
        $this->site = &$site;
        $this->funcionamento = &$funcionamento;
    }

    public function cadastrar() {
        try {
            $dlo = &EspacoCulturalDLO::getInstance();
            $dlo->cadastrar($this->area, $this->bi, $this->cod_cmdo, $this->descricao, $this->cadastro_dphcex, $this->email, $this->cod_estado_espaco, $this->nome, $this->cod_om, $this->cod_rm, $this->telefone, $this->cod_tipo_espaco, $this->logradouro, $this->numero, $this->cidade, $this->estado, $this->cep, $this->bairro, $this->complemento, $this->cod_facilidade, $this->cod_fonte_recursos, $this->site, $this->funcionamento);
        } catch (Exception $e) {
            echo "Exception: " . $e->getMessage();
        }
    }

    public function alterar() {
        try {
            $dlo = &EspacoCulturalDLO::getInstance();
            $campo = "area";
            $dlo->alterar($this->cod_espaco, $campo, $this->area);
            $campo = "bi";
            $dlo->alterar($this->cod_espaco, $campo, $this->bi);
            $campo = "cod_cmdo";
            $dlo->alterar($this->cod_espaco, $campo, $this->cod_cmdo);
            $campo = "descricao";
            $dlo->alterar($this->cod_espaco, $campo, $this->descricao);
            $campo = "cadastro_dphcex";
            $dlo->alterar($this->cod_espaco, $campo, $this->cadastro_dphcex);
            $campo = "email";
            $dlo->alterar($this->cod_espaco, $campo, $this->email);
            $campo = "cod_estado_espaco";
            $dlo->alterar($this->cod_espaco, $campo, $this->cod_estado_espaco);
            $campo = "nome";
            $dlo->alterar($this->cod_espaco, $campo, $this->nome);
            $campo = "cod_om";
            $dlo->alterar($this->cod_espaco, $campo, $this->cod_om);
            $campo = "cod_rm";
            $dlo->alterar($this->cod_espaco, $campo, $this->cod_rm);
            $campo = "telefone";
            $dlo->alterar($this->cod_espaco, $campo, $this->telefone);
            $campo = "cod_tipo_espaco";
            $dlo->alterar($this->cod_espaco, $campo, $this->cod_tipo_espaco);
            $campo = "logradouro";
            $dlo->alterar($this->cod_espaco, $campo, $this->logradouro);
            $campo = "numero";
            $dlo->alterar($this->cod_espaco, $campo, $this->numero);
            $campo = "cidade";
            $dlo->alterar($this->cod_espaco, $campo, $this->cidade);
            $campo = "estado";
            $dlo->alterar($this->cod_espaco, $campo, $this->estado);
            $campo = "cep";
            $dlo->alterar($this->cod_espaco, $campo, $this->cep);
            $campo = "bairro";
            $dlo->alterar($this->cod_espaco, $campo, $this->bairro);
            $campo = "complemento";
            $dlo->alterar($this->cod_espaco, $campo, $this->complemento);
            $campo = "cod_facilidade";
            $dlo->alterar($this->cod_espaco, $campo, $this->cod_facilidade);
            $campo = "cod_fonte_recursos";
            $dlo->alterar($this->cod_espaco, $campo, $this->cod_fonte_recursos);
            $campo = "site";
            $dlo->alterar($this->cod_espaco, $campo, $this->site);
            $campo = "funcionamento";
            $dlo->alterar($this->cod_espaco, $campo, $this->funcionamento);
        } catch (Exception $e) {
            echo "Exception: " . $e->getMessage();
        }
    }

    public function excluir() {
        try {
            $dlo = &EspacoCulturalDLO::getInstance();
            $dlo->excluir($this->cod_espaco);
        } catch (Exception $e) {
            echo "Exception: " . $e->getMessage();
        }
    }

    public function cadastrarFacilidade() {
        try {
            $dlo = &EspacoCulturalDLO::getInstance();
            $dlo->cadastrarFacilidade($this->cod_espaco, $this->cod_facilidade, $this->parecer);
        } catch (Exception $e) {
            echo "Exception: " . $e->getMessage();
        }
    }

    public function alterarFacilidade() {
        try {
            $dlo = &EspacoCulturalDLO::getInstance();
            $dlo->alterarFacilidade($this->cod_espaco, $this->cod_facilidade, $this->parecer);
        } catch (Exception $e) {
            echo "Exception: " . $e->getMessage();
        }
    }

    public function excluirFacilidade() {
        try {
            $dlo = &EspacoCulturalDLO::getInstance();
            $dlo->excluirFacilidade($this->cod_espaco, $this->cod_facilidade);
        } catch (Exception $e) {
            echo "Exception: " . $e->getMessage();
        }
    }

    public function cadastrarFonteRecursos() {
        try {
            $dlo = &EspacoCulturalDLO::getInstance();
            $dlo->cadastrarFonteRecursos($this->cod_espaco, $this->cod_fonte_recursos, $this->valor);
        } catch (Exception $e) {
            echo "Exception: " . $e->getMessage();
        }
    }

    public function alterarFonteRecursos() {
        try {
            $dlo = &EspacoCulturalDLO::getInstance();
            $dlo->alterarFonteRecursos($this->cod_espaco, $this->cod_fonte_recursos, $this->valor);
        } catch (Exception $e) {
            echo "Exception: " . $e->getMessage();
        }
    }

    public function excluirFonteRecursos() {
        try {
            $dlo = &EspacoCulturalDLO::getInstance();
            $dlo->excluirFonteRecursos($this->cod_espaco, $this->cod_fonte_recursos);
        } catch (Exception $e) {
            echo "Exception: " . $e->getMessage();
        }
    }

    public function listar() {
        if (isset($this->cmdo)) {
            $dlo = &EspacoCulturalDLO::getInstance();
            $lista = &$dlo->listarByCMDO($this->cmdo);
            if ($this->tipo_listagem == 'xml') {
                $xml = new XMLWriter();
                $xml->openMemory();
                $xml->startDocument('1.0', 'UTF-8');
                $xml->startElement("lista");
                foreach ($lista as $espaco) {
                    $xml->startElement("espaco");
                    $xml->writeElement('cod_espaco', $espaco['cod_espaco']);
                    $xml->writeElement('nome', $espaco['nome']);
                    $xml->endElement();
                }
                $xml->endElement();
                header('Content-type: text/xml');
                print $xml->outputMemory(true);
            } else if ($this->tipo_listagem == 'json') {
                echo json_encode($lista);
            }
        } else {
            $recurso = 'espaco';
            $result = &GrupoDLO::getInstance()->consultarPermissao(UsuarioDLO::getInstance()->getCod_grupo(), $recurso);
            $recurso = 'arquivo';
            $resultArquivo = &GrupoDLO::getInstance()->consultarPermissao(UsuarioDLO::getInstance()->getCod_grupo(), $recurso);
            if ($result['consulta'] == 'S') {
                $dlo = &EspacoCulturalDLO::getInstance();
                $lista = &$dlo->listar();
                $exclusao = '';
                $alteracao = '';
                $arquivo = '';
                if ($this->tipo_listagem == 'tabela') {
                    foreach ($lista as $row) {
                        if ($resultArquivo['consulta'] == 'S') {
                            $arquivo = '<div class="ui-state-default ui-corner-all"  style="float: left">
                                <a href="javascript: void(0)"><span id="trash" class="ui-icon ui-icon-image" onclick="showDialogUploadFile(' . $row["cod_espaco"] . ')" title="Adicionar Fotos"></span></a>
                            </div>';
                        }
                        if ($result['exclusao'] == 'S') {
                            $exclusao = '<div class="ui-state-default ui-corner-all"  style="float: left">
                                <a href="javascript: void(0)"><span id="trash" class="ui-icon ui-icon-trash" onclick="showConfirm(\'Confirma exclusão?\',function() {manutencaoEspaco(\'excluir\',' . $row["cod_espaco"] . ');$(this).dialog(\'close\');})" title="Excluir"></span></a>
                            </div>';
                        }
                        if ($result['alteracao'] == 'S') {
                            $alteracao = '<div class="ui-state-default ui-corner-all"  style="float: left">
                                <a href="javascript: void(0)"><span id="trash" class="ui-icon ui-icon-pencil" onclick="showDialogManutencaoEspacoCultural(\'alterar\', preencherDialogEspacoCultural(' . $row["cod_espaco"] . '))" title="Editar"></span></a>
                            </div>';
                        }
                        echo '<tr id="' . $row["cod_espaco"] . '">';
                        echo '<td>' . $row["nome"] . '</td>';
                        echo "<td width='60px'>$arquivo $alteracao $exclusao</td>";
                        echo '</tr>';
                    }
                } elseif ($this->tipo_listagem == 'xml') {
                    $xml = new XMLWriter();
                    $xml->openMemory();
                    $xml->startDocument('1.0', 'UTF-8');
                    $xml->startElement("lista");
                    foreach ($lista as $espaco) {
                        $xml->startElement("espaco");
                        $xml->writeElement('cod_espaco', $espaco['cod_espaco']);
                        $xml->writeElement('nome', $espaco['nome']);
                        $xml->endElement();
                    }
                    $xml->endElement();
                    header('Content-type: text/xml');
                    print $xml->outputMemory(true);
                } else if ($this->tipo_listagem == 'json') {
                    echo json_encode($lista);
                }
            } else {
                throw new Exception('Sem permissão de consulta!');
            }
        }
    }

    public function consultar() {
        try {
            $dlo = &EspacoCulturalDLO::getInstance();
            $row = &$dlo->consultar($this->cod_espaco);
            if (UsuarioDLO::getInstance()->isLogado()) {
                $recurso = 'espaco';
                $result = &GrupoDLO::getInstance()->consultarPermissao(UsuarioDLO::getInstance()->getCod_grupo(), $recurso);
                $row["permissoes"] = $result;
            }
            if ($this->tipo_listagem == 'xml') {
                $xml = new XMLWriter();
                $xml->openMemory();
                $xml->startDocument('1.0', 'UTF-8');
                $xml->startElement("espaco");
                $xml->writeAttribute('area', $row['area']);
                $xml->writeAttribute('bi', $row['bi']);
                $xml->writeAttribute('descricao', $row['descricao']);
                $xml->writeAttribute('cadastro_dphcex', $row['cadastro_dphcex']);
                $xml->writeAttribute('email', $row['email']);
                $xml->writeAttribute('site', $row['site']);
                $xml->writeAttribute('funcionamento', $row['funcionamento']);
                $xml->startElement("fontes");
                foreach ($row['fonte_recursos'] as $rowFonte) {
                    $xml->startElement("fonte_recursos");
                    $xml->writeAttribute('cod_fonte_recursos', $rowFonte['cod_fonte_recursos']);
                    $xml->writeAttribute('descricao', $rowFonte['descricao']);
                    $xml->writeAttribute('valor', $rowFonte['valor']);
                    $xml->endElement();
                }
                $xml->endElement();
                $xml->startElement("facilidades");
                foreach ($row['facilidades'] as $rowFacilidade) {
                    $xml->startElement("facilidade");
                    $xml->writeAttribute('cod_facilidade', $rowFacilidade['cod_facilidade']);
                    $xml->writeAttribute('descricao', $rowFacilidade['descricao']);
                    $xml->writeAttribute('parecer', $rowFacilidade['parecer']);
                    $xml->endElement();
                }
                $xml->endElement();
                $xml->writeAttribute('nome', $row['nome']);
                $xml->writeAttribute('telefone', $row['telefone']);
                $rowTipo = &$row['tipo'];
                $xml->startElement("tipo");
                $xml->writeAttribute('cod_tipo_espaco', $rowTipo['cod_tipo_espaco']);
                $xml->writeAttribute('descricao', $rowTipo['descricao']);
                $xml->endElement();
                $rowRm = &$row['rm'];
                $xml->startElement("rm");
                $xml->writeAttribute('cod_rm', $rowRm['cod_rm']);
                $xml->writeAttribute('descricao', $rowRm['descricao']);
                $xml->endElement();
                $rowEstado = &$row['estado_espaco'];
                $xml->startElement("estado");
                $xml->writeAttribute('cod_estado_espaco', $rowEstado['cod_estado_espaco']);
                $xml->writeAttribute('descricao', $rowEstado['descricao']);
                $xml->endElement();
                $rowCmdo = &$row['cmdo'];
                $xml->startElement("cmdo");
                $xml->writeAttribute('cod_cmdo', $rowCmdo['cod_cmdo']);
                $xml->writeAttribute('descricao', $rowCmdo['descricao']);
                $xml->endElement();
                $rowOm = &$row['om'];
                $xml->startElement("om");
                $xml->writeAttribute('cod_om', $rowOm['cod_om']);
                $xml->writeAttribute('descricao', $rowOm['descricao']);
                $xml->endElement();
                $rowEndereco = &$row['endereco'];
                $xml->startElement("endereco");
                $xml->writeAttribute('logradouro', $rowEndereco['logradouro']);
                $xml->writeAttribute('numero', $rowEndereco['numero']);
                $xml->writeAttribute('cidade', $rowEndereco['cidade']);
                $xml->writeAttribute('estado', $rowEndereco['estado']);
                $xml->writeAttribute('cep', $rowEndereco['cep']);
                $xml->writeAttribute('bairro', $rowEndereco['bairro']);
                $xml->writeAttribute('complemento', $rowEndereco['complemento']);
                $xml->endElement();
                $xml->writeAttribute('cod_espaco', $row['cod_espaco']);
                $xml->writeAttribute('vinculado', $row['vinculado']);
                $xml->endElement();
                header('Content-type: text/xml');
                print $xml->outputMemory(true);
            } elseif ($this->tipo_listagem == 'json') {
                echo json_encode($row);
            }
        } catch (Exception $e) {
            echo "Exception: " . $e->getMessage();
        }
    }

    public function consultarNome() {
        try {
            $recurso = 'espaco';
            $result = &GrupoDLO::getInstance()->consultarPermissao(UsuarioDLO::getInstance()->getCod_grupo(), $recurso);
            if ($result['consulta'] == 'S') {
                $dlo = &EspacoCulturalDLO::getInstance();
                $lista = &$dlo->listarByNome($this->nome_espaco);
                if ($this->tipo_listagem == 'xml') {
                    $xml = new XMLWriter();
                    $xml->openMemory();
                    $xml->startDocument('1.0', 'UTF-8');
                    $xml->startElement("lista");
                    foreach ($lista as $espaco) {
                        $xml->startElement("espaco");
                        $xml->writeElement('cod_espaco', $espaco['cod_espaco']);
                        $xml->writeElement('nome', $espaco['nome']);
                        $xml->endElement();
                    }
                    $xml->endElement();
                    header('Content-type: text/xml');
                    print $xml->outputMemory(true);
                } else if ($this->tipo_listagem == 'json') {
                    echo json_encode($lista);
                }
            } else {
                throw new Exception('Sem permissão de consulta!');
            }
        } catch (Exception $e) {
            echo "Exception: " . $e->getMessage();
        }
    }

}

$controller = new EspacoCulturalController($_POST['cod_espaco'], $_POST['nome_espaco'], $_POST['cod_usuario'], $_POST['cod_facilidade'], $_POST['parecer'], $_POST['valor'], $_POST['area'], $_POST['bi'], $_POST['cod_cmdo'], $_POST['descricao'], $_POST['cadastro_dphcex'], $_POST['email'], $_POST['cod_estado_espaco'], $_POST['cod_fonte_recursos'], $_POST['nome'], $_POST['cod_om'], $_POST['cod_rm'], $_POST['telefone'], $_POST['cod_tipo_espaco'], $_POST['logradouro'], $_POST['numero'], $_POST['cidade'], $_POST['estado'], $_POST['cep'], $_POST['bairro'], $_POST['complemento'], $_POST['row_id'], $_POST['campo_id'], $_POST['campo_valor'], $_POST['tipo_listagem'], $_POST['cmdo'], $_POST['site'], $_POST['funcionamento']);
if ($_POST['acao'] == 'cadastrar') {
    $controller->cadastrar();
} elseif ($_POST['acao'] == 'alterar') {
    $controller->alterar();
} elseif ($_POST['acao'] == 'excluir') {
    $controller->excluir();
} elseif ($_POST['acao'] == 'consultar') {
    $controller->consultar();
} elseif ($_POST['acao'] == 'listar') {
    $controller->listar();
} elseif ($_POST['acao'] == 'cadastrar_facilidade') {
    $controller->cadastrarFacilidade();
} elseif ($_POST['acao'] == 'alterar_facilidade') {
    $controller->alterarFacilidade();
} elseif ($_POST['acao'] == 'excluir_facilidade') {
    $controller->excluirFacilidade();
} elseif ($_POST['acao'] == 'cadastrar_fonte_recursos') {
    $controller->cadastrarFonteRecursos();
} elseif ($_POST['acao'] == 'alterar_fonte_recursos') {
    $controller->alterarFonteRecursos();
} elseif ($_POST['acao'] == 'excluir_fonte_recursos') {
    $controller->excluirFonteRecursos();
} elseif ($_POST['acao'] == 'consultar_nome') {
    $controller->consultarNome();
}
?>